package com.shujia.day03;

public class Demo11ArrayMemory {
    public static void main(String[] args) {
        /*
            定义两个数组，先定义一个数组，赋值，输出。然后定义第二个数组的时候把第一个数组的地址赋值给第二个数组。
            然后给第二个数组赋值，再次输出两个数组的名及元素。

            TODO 对两个变量指向同一个对象地址
                当对变量进行操作时,实际上就是对其变量保存的内存地址上的对象数据进行操作

         */

        String[] names1 = new String[3];
        String[] names2 = new String[2];
        names1[0] = "刘俊杰";
        names1[1] = "余晓洋";
        names2[0] = "谷圆圆";

        // 将 names2 的内存地址赋予给 names1, names2保存的内存地址也存在
        names1 = names2;
        System.out.println(names1[0]);

        names1[1] = "刘俊杰";
        System.out.println(names2[1]); //刘俊杰


        System.out.println(names2);
        names2 = null;
        System.out.println(names2);

        // java.lang.NullPointerException 当需要对变量中的对象进行操作时,如果找不到对应的内存地址
        //    则会报 空指针异常
        System.out.println(names2[0]);

    }
}
